package com.lysh.test.io;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author liyishan    BIO
 * @date 2023/5/5 14:29
 * @apiNote 问题：没办法处理并发线程 1。开启客户端1 2。开启客户端2  客户端1接收消息后才会接收客户端2 发送的消息  如果客户端1没有发送消息就会阻塞客户端2 --》解决：用多线程
 */

public class SocketServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(9000);
        while(true){
            System.out.println("等待连接");
            //阻塞方法,等待客户端连接。   在此debug  然后cmd   telnet  localhost 9000         > send liyishan
            Socket clientSocket = serverSocket.accept();
            System.out.println("有客户端连接了");
            handler(clientSocket);
        }
    }

    private static void handler(Socket clientSocket) throws IOException {
        byte[] bytes = new byte[1024];
        System.out.println("准备read。。。");
        //接收客户端的数据，阻塞方法，没有数据可读时阻塞
        int read = clientSocket.getInputStream().read(bytes);
        System.out.println("read完毕。。。");
        if(read != -1){
            System.out.println("接收到客户端的数据："+new String(bytes,0,read));
        }
    }
}
